package pkg

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"time"
)

// WebhookMessage 飞书 webhook 消息结构
type WebhookMessage struct {
	MsgType string `json:"msg_type"`
	Content struct {
		Text string `json:"text"`
	} `json:"content"`
}

type FeiShuWebhook struct {
}

// SendWebhookMessage 发送 webhook 消息
func (t *FeiShuWebhook) SendWebhookMessage(webhookURL, text string) error {
	// 构造消息体
	message := WebhookMessage{
		MsgType: "text",
	}
	message.Content.Text = text

	// 序列化为 JSON
	jsonData, err := json.Marshal(message)
	if err != nil {
		return fmt.Errorf("序列化消息失败: %v", err)
	}

	// 创建带超时的客户端
	client := &http.Client{
		Timeout: 5 * time.Second,
	}

	// 发送 HTTP POST 请求
	resp, err := client.Post(webhookURL, "application/json", bytes.NewBuffer(jsonData))
	if err != nil {
		return fmt.Errorf("发送请求失败: %v", err)
	}
	defer resp.Body.Close()

	// 读取响应
	body, err := io.ReadAll(resp.Body)
	if err != nil {
		return fmt.Errorf("读取响应失败: %v", err)
	}

	// 检查响应状态
	if resp.StatusCode != http.StatusOK {
		return fmt.Errorf("发送失败，状态码: %d, 响应: %s", resp.StatusCode, string(body))
	}

	fmt.Printf("✅ 消息发送成功! 响应: %s\n", string(body))
	return nil
}
